package com.jiayuge.server.service.impl;

import com.jiayuge.server.pojo.Admin;
import com.jiayuge.server.pojo.Menu;
import com.jiayuge.server.mapper.MenuMapper;
import com.jiayuge.server.pojo.Role;
import com.jiayuge.server.service.IMenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Jiayu.Yang
 * @since 2021-11-15
 */
@Service
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService {

    @Autowired
    private MenuMapper menuMapper;

    /**
     * 功能: 通过当前登录用户id查询菜单列表  |  通过用户id查询菜单列表  |  数据库: 增 查
     * * @param
     * @return {@link List< Menu>}
     * @Date 2021/11/18
     * @author jiayu.Yang
     */
    @Override
    public List<Menu> getMenusByAdminId() {
        //从Security全局变量中获取当前登录用户
        Admin admin = (Admin) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        //根据当前登录用户的id去查询菜单列表
        return menuMapper.getMenusByAdminId(admin.getId());
    }

    /**
     * 功能:根据角色获取菜单列表 数据库: 查
     * * @param
     * @return {@link List< Role>}
     * @Date 2021/11/18
     * @author jiayu.Yang
     */
    @Override
    public List<Menu> getMenusWithRole() {
        return menuMapper.getMenusWithRole();
    }

    /**
     * 功能: 获取所有菜单 层级分明    |  数据库:  查
     * * @param
     * @return {@link List< Menu>}
     * @Date 2021/11/23
     * @author jiayu.Yang
     */
    @Override
    public List<Menu> getAllMenu() {
        return menuMapper.getAllMenu();
    }
}
